package com.jiashihui.schema_lgorithm.schema.strategy;

/**
 * @author jiashihui
 * @describe: 策略模式
 * @date 2019/03/14
 *
 * 1. 定义了一系列算法，并将每个算法封装起来，使他们可以相互替换，且算法的变化不会影响到使用算法的客户。
 * 2. 需要设计一个接口，为一系列实现类提供统一的方法，多个实现类实现该接口，设计一个抽象类（可有可无，属于辅助类），提供辅助函数。
 * 3. 决定权在用户，系统本身提供不同算法的实现，新增或者删除算法，对各种算法做封装。
 *
 * 策略模式的主要思想：
 * 使不同的算法可以被相互替换，而不影响客户端的使用
 */
public class StrategyTest {
    public static void main(String[] args) {
        String exp = "8*8";
        Calculator calculator = new MultiplyImpl();
        int result = calculator.calculator(exp);
        System.out.println("8*8 = " + result);
    }
}
